package com.koron.css2.contractmanage.ecBean.contrCreatBean;


import io.swagger.annotations.ApiModel;
import lombok.Data;
import org.springframework.stereotype.Component;

import java.util.List;

@Data
@Component
@ApiModel(value = "调用创建合同接口入参参数类", description = "调用电子签章平台创建合同接口的入参")
public class EcContractCreatBean {
    // 合同名称
    private String subject;

    // 合同编号，对接方系统中的业务编号
    private String sn;

    // 合同描述
    private String description;

    // 用印流程
    private Category category;

    // 是否发起合同，默认true。（true：立即发起；false：保存为草稿）
    private Boolean send;

    // 合同文档ID的集合（一个文档只能属于一个合同）
    private List<Long> documents;

    // 合同过期时间；格式： yyyy-MM-dd HH:mm:ss， 过期未结束签署，则作废，不传该参数则默认使用控制台配置的过期时 间。
    private String expireTime;

    // 合同终止时间；格式： yyyy-MM-dd ，系统将时间调至传入时间的23时59分59秒。
    private String endTime;

    // 合同创建人姓名
    private String creatorName;

    // 合同创建人手机号码
    private String creatorContact;

    // 合同创建人邮箱
    private String creatorEmail;

    // 合同创建人在发起方中的员工编号
    private String creatorNumber;

    // 发起方名称
    private String tenantName;

    // 签署方，为空时在合同签署完成后需要调用接口“封存合同”主动结束合同
    private List<Signatory> signatories;

    // 模板参数
    private List<DocumentParam> documentParams;

    // 用户的业务数据
    private String businessData;

    // 合同的唯一标识，由调用方生成
    private String bizId;

    // 是否顺序签署
    private Boolean ordinal;

    // 水印配置（需在用印流程配置水印并勾选通过接口设置），参考WaterMarkContent
    private List<WaterMarkContent> waterMarkConﬁgs;

    // 指定位置外签署，默认为false
    private Boolean extraSign;

    // 允许指定位置签署，默认 为true，指定位置外签署和指定位置签署两者不可同 时为false
    private Boolean mustSign;

    // 是否自动生成会签节点（用于签署动作中传入多个印章并且未指定签署人）默认false
    private Boolean autoCreateCounterSign;

    /**
     * 是否所有文档均需签署：
     * 1.DEFAULT, //默认，无需签署所有文档
     * 2.ALL, //所有签署方每个签署节点必须签署所有文档
     * 3.SENDER, //发起方每个签署节点必须签署所有文档
     * 4.RECEIVER //接受方每个节点必须签署所有文档
     */
    private String signAll;

    // 抄送人配置，参考ContractTransmit
    private List<ContractTransmitItem> transmitters;

    // 0 发送全部通知；1 仅发送短信通知；2 仅发送邮件通知
    private Integer msgCode;
}
